package reflect;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * 注解
 * 注解可以辅助反射机制，例如帮助我们快速筛选在反射中操作的目标。他在如今流行的框架中被大量使用。
 *
 * java内置了一些注解，有些是辅助编译器时做验证使用。
 * 下面的两个注解就是java内置的注解，他们用于为我们定义的注解指定某些特性:
 * @Target:用于指定我们定义的注释可以被应用在那些，具体的位置被枚举类型:ElementYype.
 *      定义。例如:
 *      TYPE:在类上可以使用当期注解.
 *      METHOD:在方法上可以使用当前注解.
 *      FIELD:在属性上可以使用当前注解.
 *      还有一些其它的,可以参考API手册.
 * @Retention:用于指定我们定义的注解的保留级别.
 *      RetentionPolice.RUNTIME是最长用的，保留的在字节码文件中且在该类运行时可被反射机制利用。
 *      CLASS:保留在字节码中，但是反射机制不可用，默认就是该级别。
 *      SOURCE:保留在源码中.
 */

//目标(也可以指向多个注解)
@Target(ElementType.TYPE)//ElementType.:枚举.  TYPE:关于类的注解
//保留在什么地方//SOURCE源码中保留(不常用)//RUNTIME()
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoRunClass {




}
